嗨,大家好!我是 Eric。今天我們要探討一個很有趣的主題:字典順序。
不同於編碼順序,字典順序有它獨特的排序邏輯,接下來讓我們來看一個具體的例子。
假設我們有一組城市名稱陣列:
const names = ['台北市', '新北市', '桃園市'];
如果我們直接使用 JavaScript 的 .sort()
方法:
names.sort();
console.log(names);
// 輸出:['台北市', '新北市', '桃園市']
這裡的排序是按照字符的編碼順序進行的,但這並不是我們想要的字典順序。
編碼順序只考慮字符的編碼值,而不考慮語言或文化的排序規則。舉例來說:
console.log('新' > '桃'); // 輸出:false
對於 '新' > '桃'
,這個比較是基於 Unicode:
由於 26032 < 26691,所以 '新' > '桃'
返回 false。
localeCompare
我們可以使用字符串的 localeCompare
方法來進行字典順序比較。
console.log('新'.localeCompare('桃')); // 輸出:1
這個方法會根據地區設定(locale)來比較字符串,並返回 -1、0 或 1,代表小於、等於或大於。
sort
和 localeCompare
結合 sort()
和 localeCompare()
,我們可以得到想要的排序結果。
names.sort((a, b) => a.localeCompare(b));
console.log(names); // 輸出:['台北市', '桃園市', '新北市']
在多語言或特定文化背景下,單純依靠編碼順序來排序可能不會滿足需求,而 localeCompare
能考慮語言和地區的特性,還能與 sort()
方法結合,讓我們更靈活地進行排序。
那麼這次分享就到這邊啦~我們明天見~~
參考網站:https://medium.com/appxtech/localecompare-的用法-6be2ab8401ad